package com.demarc.pesquisa.negocio.util;

import org.joda.time.LocalDate;

import com.demarc.pesquisa.negocio.dao.AbstractDAOTest;
import com.demarc.pesquisas.negocio.entidade.domicilio.Domicilio;
import com.demarc.pesquisas.negocio.entidade.entrevista.Entrevista;
import com.demarc.pesquisas.negocio.entidade.entrevistado.Entrevistado;
import com.demarc.pesquisas.negocio.entidade.entrevistador.Entrevistador;
import com.demarc.pesquisas.negocio.entidade.pesquisa.Pesquisa;

public class EntrevistaUtil {

    public static Entrevista criarPadrao() {
        Entrevistado entrevistado = EntrevistadoUtil.criarPadrao();
        return criar(1, PesquisaUtil.criarPadrao(), EntrevistadorUtil.criarPadrao(), entrevistado,
                DomicilioUtil.criarPadrao(entrevistado));
    }

    public static Entrevista criar(Integer sequencial, Entrevistado entrevistado,
            Domicilio domicilio) {

        return criar(sequencial, PesquisaUtil.criarPadrao(), EntrevistadorUtil.criarPadrao(),
                entrevistado, domicilio);
    }

    public static Entrevista criar(Integer sequencial, Pesquisa pesquisa,
            Entrevistador entrevistador, Entrevistado entrevistado, Domicilio domicilio) {

        Entrevista entrevista = new Entrevista();
        entrevista.setSequencial(sequencial);
        entrevista.setData(new LocalDate());
        entrevista.setPesquisa(pesquisa);
        entrevista.setEntrevistador(entrevistador);
        entrevista.setEntrevistado(entrevistado);
        entrevista.setDomicilio(domicilio);
        return entrevista;
    }

    public static <T extends AbstractDAOTest> void salvarComDependencias(T classeTeste,
            boolean salvarPesquisaEntrevistador, Entrevista... entrevistas) {

        for (Entrevista entrevista : entrevistas) {
            if (salvarPesquisaEntrevistador) {
                classeTeste.save(entrevista.getPesquisa());
                classeTeste.save(entrevista.getEntrevistador());
            }
            classeTeste.save(entrevista.getEntrevistado());
            classeTeste.save(entrevista.getDomicilio());
            classeTeste.save(entrevista);
        }
    }
}
